<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>文档标题</title>
    <script src="md5.js"></script>
</head>

<body>
</body>
<script type="text/javascript">
    let v获取随机数 = (e) => {
        e = e || 32;
        var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789",
            a = t.length,
            n = "";
        for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));
        return n
    }
    //此处为加密算法，这里采用的是md5，如果想使用其它算法这里修改一下就好
    let jm = (val) => {
        //CryptoJS.SHA256(val).toString()
        return hex_md5(val)
    }
    /*     
    //此处是验证的长度，测试下来，长度为4那么正常一个证明出来的时间为0.1-0.6秒左右，
    如果是5那么就是3-10秒样子验证出来（电脑测试，其它的可能要看配置）
        //以下的值 越大，那么出结果的时间越长 */
    let len = 4

    let 基础数据 = "longfei"
    //let ks = v获取随机数(len)
    //console.log("")
    let 获取解密算法 = (val, le = 5) => {
        let 随机次数 = 0
        let timestamp1 = new Date().getTime();
        while (true) {
            let 随机数 = 基础数据 + 随机次数
            let ti = new Date().getTime() - timestamp1
            if (val.substring(0, le) == jm(随机数 + timestamp1).substring(0, le)) {
                let valll = 随机次数 + "找到随机字符串" + 随机数 + "前面" + le + "一样,过去的时间为" + ti / 1000 + "秒" + "---原始：" + val + "\r\n"
                console.log(valll)
                document.write(valll);
                return { 随机数, timestamp1 }
            }
            随机次数++
        }
    }
    setInterval(() => {
        /*
        后端给的token可以是一个随机生成的小写字母+数字，长度自己视情况，
        如果随机4位数，那么前端可以直接拿长度去前端全部匹配
        */
        let 后端给的token = jm(v获取随机数(len)).substring(0, len)
        let 结果 = 获取解密算法(后端给的token, len)
        /* 
        1.拿到结果后，再拿这个传到后端验证
        后端先通过ip获取传给前端的token来保证一个ip只能去获得一个证明，也可以加上时效来验证是否过期,
        然后md5(随机数 + timestamp1),对比前端的四位或者5位是否一致
        2.另外还要验证时间戳是否是很久前的，，，正常10秒内过期（有些机器他的时间跟北京时间不对，
        会出现时间验证不通过，正常60秒是很高容错了）
         */
    }, 8000)
        //let va = 获取解密算法(ks)
        //console.log(va, jm(va.随机数+va.timestamp1),111111,ks)
        //console.log(v获取随机数(20))
</script>

</html>